Keras模型融合
0x01 概述
sklearn有voting(软/硬),stacking,bagging(pasting),boosting等
那么Keras呢?
- Merge的使用
- Concatenate
- Xception等模型融合
- 其他
0x01 Merge
{“sum”,“mul”,“concat”,“ave”,“cos”,“dot”}
0x02 Concatenate
keras2.0 Merge层
改为函数式
不能再向以前一样使用
model.add(Merge([Model1,Model2]))
变成了麻烦点的(最好不用)
merge([tensor1, tensor2], mode=’concat’, concat_axis= )
推荐使用函数式
out = Concatenate()([model1.output, model2.output],axis=1)*#拼接输出,融合成功或者
t=keras.layers.Concatenate(axis=1)([top1_model,top2_model])
concatenate
从名字可以看出是连接两个数组
小小演示
0x03 Xception等融合
使用concatenate
Plant_disease_Recognation时用到过
- 参考例子
- 其实和“其他”的那个融合差不多勒···
思想:
- import 预训练模型输出的特征图
- 使用concatenate连接各模型的输出
- 使用Dense-Dropout-Dense学习连接后的特征图
- 输出为原输出形状
实现代码:
1 | def bulid_model(): |
0x0 其他
尝试的比赛融合代码,啊哈哈有点尴尬,融合后精度下降了···